package com.learn.thread;

/**
 * 最基本的lambda表达式的演变
 */
public class DemoThread25110204 {
    /**
     * 内部类接口
     */
    static class DemoLambdaDemo2 implements LambdaDemo {
        @Override
        public void run() {
            System.out.println("DemoLambdaDemo2 is running...");
        }
    }

    public static void main(String[] args) {
        LambdaDemo demoLambdaDemo1 = new DemoLambdaDemo1();
        demoLambdaDemo1.run();

        new DemoLambdaDemo2().run();

        class DemoLambdaDemo3 implements LambdaDemo {
            @Override
            public void run() {
                System.out.println("DemoLambdaDemo3 is running...");
            }
        }
        new DemoLambdaDemo3().run();

        /**
         匿名内部类
         */
        new LambdaDemo() {
            @Override
            public void run() {
                System.out.println("DemoLambdaDemo4 is running...");
            }
        }.run();

        /**
         lambda表达式
         */
        LambdaDemo demoLambdaDemo = () -> {
            System.out.println("DemoLambdaDemo5 is running...");
        };
        demoLambdaDemo.run();
    }
}

/**
 * 函数式接口
 */
interface LambdaDemo {
    void run();
}

/**
 * 外部类接口
 */

class DemoLambdaDemo1 implements LambdaDemo {
    @Override
    public void run() {
        System.out.println("DemoLambdaDemo1 is running...");
    }
}